<?php
/**
 * “浪费时间来学习”站自己使用的一些函数
 *
 * @package 最爱你是谁
 */

/**
 * 下载指定网页内容。
 *
 * @since 0.1.2.11.6.8
 * @param string $url 需要下载的网页的地址。
 * @return string 指定网址的内容或有关错误信息。
 * 
 */
function idea_get_url($url) {
	if (! function_exists ( 'curl_init' )) {
		return '错误：curl 模块未启用。';
	}
	$ch = curl_init ( $url );
	curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
	curl_setopt ( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27' );
	$content = curl_exec ( $ch );
	$count_curl = 0;
	while ( empty ( $content ) && $count_curl <= 5 ) {
		$count_curl ++;
		sleep ( '3' );
		$content = curl_exec ( $ch );
	}
	curl_close ( $ch );
	if (empty ( $content )) {
		return '错误：无法获取指定网址内容。';
	} else {
		return $content;
	}
}

/**
 * 获取表格单元格内容，支持行合并的表格，多个表格将视为一个处理
 *
 * @since 0.1.2.11.6.9
 * @param string $table 用于获取单元格内容的表格源码。
 * @return string 包含单元格内容的二维数组，索引为行列号，计数从0开始，出错则返回错误信息。
 * 
 */
function idea_get_table($table) {
	$pattern_row = '|<tr[^>]*?>([\w\W]+?)</tr>|';
	$pattern_column = '|<td[^>]*?>([\w\W]+?)</td>|';
	preg_match_all ( $pattern_row, $table, $matches_row );
	unset ( $table, $pattern_row );
	foreach ( $matches_row ['1'] as $row_id => $row ) {
		preg_match_all ( $pattern_column, $row, $matches_column );
		$table_content [$row_id] = $matches_column ['1'];
		unset ( $row_id, $row, $matches_column );
	}
	unset ( $matches_row, $pattern_column );
	if (isset ( $table_content )) {
		return $table_content;
	} else {
		return 'ERROR:表格格式错误';
	}
}

/**
 * 将指定网页源码里的地址相对路径转换为绝对路径。
 *
 * @since 0.1.2.11.6.9
 * @param string $content 用于转换的网页源码。
 * @param string $feed_url 网页地址。
 * @return string 转换后的网页源码。
 * 
 */
function idea_relative_to_absolute($content, $feed_url) {
	preg_match ( '/(http|https|ftp):\/\//', $feed_url, $protocol );
	$server_url = preg_replace ( "/(http|https|ftp|news):\/\//", "", $feed_url );
	$server_url = preg_replace ( "/\/.*/", "", $server_url );
	
	if ($server_url == '') {
		return $content;
	}
	
	if (isset ( $protocol [0] )) {
		$new_content = preg_replace ( '/href="\//', 'href="' . $protocol [0] . $server_url . '/', $content );
		$new_content = preg_replace ( '/src="\//', 'src="' . $protocol [0] . $server_url . '/', $new_content );
	} else {
		$new_content = $content;
	}
	return $new_content;
}

?>
